From 481c06cdb6bfb370ba2d84f4b6bb4ba260eb14cd Mon Sep 17 00:00:00 2001 From: memdmp Date: Wed, 14 Jan 2026 04:36:14 +0100 Subject: feat: start work on blog --- src/routes/blog/[id=int]/+page.server.ts | 12 ++++++++++++ src/routes/blog/[id=int]/+page.svelte | 28 ++++++++++++++++++++++++++++ src/routes/blog/[id=int]/+page.ts | 11 +++++++++++ 3 files changed, 51 insertions(+) create mode 100644 src/routes/blog/[id=int]/+page.server.ts create mode 100644 src/routes/blog/[id=int]/+page.svelte create mode 100644 src/routes/blog/[id=int]/+page.ts (limited to 'src/routes/blog/[id=int]') diff --git a/src/routes/blog/[id=int]/+page.server.ts b/src/routes/blog/[id=int]/+page.server.ts new file mode 100644 index 0000000..e295257 --- /dev/null +++ b/src/routes/blog/[id=int]/+page.server.ts @@ -0,0 +1,12 @@ +import { parsePost } from '$/lib/blog/Post.svelte' +import rawPosts from '../posts.js'; + +const posts = Promise.all(Object.entries(rawPosts).map(async post => [post[0], parsePost(await post[1])] as const)); +const postMap = posts.then(posts => posts.map(post => [post[1].metadata.id.toString(), { + metadata: post[1].metadata, + filename: post[0], +}])).then(v => new Map(v)); + +export const load = async (req) => ({ + post: (await postMap).get(req.params.id), +}); diff --git a/src/routes/blog/[id=int]/+page.svelte b/src/routes/blog/[id=int]/+page.svelte new file mode 100644 index 0000000..16fc586 --- /dev/null +++ b/src/routes/blog/[id=int]/+page.svelte @@ -0,0 +1,28 @@ + + + diff --git a/src/routes/blog/[id=int]/+page.ts b/src/routes/blog/[id=int]/+page.ts new file mode 100644 index 0000000..077d72c --- /dev/null +++ b/src/routes/blog/[id=int]/+page.ts @@ -0,0 +1,11 @@ +import { error } from '@sveltejs/kit'; +import posts from '../dynamic-posts.js'; + +export const load = async ({ data }) => { + const filename = data.post?.filename; + if (!filename) throw error(404, 'Post not found.') + const post = (await posts[filename]()); + return { + post, + } +} -- cgit v1.2.3